home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / programs_-_include / ASM-ARM / PROC-ARM.{21 / PTRACE.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  2KB  |  82 lines

  1. /*
  2.  * linux/include/asm-arm/proc-armv/ptrace.h
  3.  *
  4.  * Copyright (C) 1996 Russell King
  5.  */
  6.  
  7. #ifndef __ASM_PROC_PTRACE_H
  8. #define __ASM_PROC_PTRACE_H
  9.  
  10. /* this struct defines the way the registers are stored on the
  11.    stack during a system call. */
  12.  
  13. struct pt_regs {
  14.     long uregs[18];
  15. };
  16.  
  17. #define ARM_cpsr    uregs[16]
  18. #define ARM_pc        uregs[15]
  19. #define ARM_lr        uregs[14]
  20. #define ARM_sp        uregs[13]
  21. #define ARM_ip        uregs[12]
  22. #define ARM_fp        uregs[11]
  23. #define ARM_r10        uregs[10]
  24. #define ARM_r9        uregs[9]
  25. #define ARM_r8        uregs[8]
  26. #define ARM_r7        uregs[7]
  27. #define ARM_r6        uregs[6]
  28. #define ARM_r5        uregs[5]
  29. #define ARM_r4        uregs[4]
  30. #define ARM_r3        uregs[3]
  31. #define ARM_r2        uregs[2]
  32. #define ARM_r1        uregs[1]
  33. #define ARM_r0        uregs[0]
  34. #define ARM_ORIG_r0    uregs[17] /* -1 */
  35.  
  36. #define USR26_MODE    0x00
  37. #define FIQ26_MODE    0x01
  38. #define IRQ26_MODE    0x02
  39. #define SVC26_MODE    0x03
  40. #define USR_MODE    0x10
  41. #define FIQ_MODE    0x11
  42. #define IRQ_MODE    0x12
  43. #define SVC_MODE    0x13
  44. #define ABT_MODE    0x17
  45. #define UND_MODE    0x1b
  46. #define SYSTEM_MODE    0x1f
  47. #define MODE_MASK    0x1f
  48. #define F_BIT        0x40
  49. #define I_BIT        0x80
  50. #define CC_V_BIT    (1 << 28)
  51. #define CC_C_BIT    (1 << 29)
  52. #define CC_Z_BIT    (1 << 30)
  53. #define CC_N_BIT    (1 << 31)
  54.  
  55. #define user_mode(regs)    \
  56.     ((((regs)->ARM_cpsr & MODE_MASK) == USR_MODE) || \
  57.      (((regs)->ARM_cpsr & MODE_MASK) == USR26_MODE))
  58.  
  59. #define processor_mode(regs) \
  60.     ((regs)->ARM_cpsr & MODE_MASK)
  61.  
  62. #define interrupts_enabled(regs) \
  63.     (!((regs)->ARM_cpsr & I_BIT))
  64.  
  65. #define fast_interrupts_enabled(regs) \
  66.     (!((regs)->ARM_cpsr & F_BIT))
  67.  
  68. #define condition_codes(regs) \
  69.     ((regs)->ARM_cpsr & (CC_V_BIT|CC_C_BIT|CC_Z_BIT|CC_N_BIT))
  70.     
  71. #define instruction_pointer(regs)    ((regs)->ARM_pc)
  72. #define pc_pointer(v)            (v)
  73.  
  74. /* Are the current registers suitable for user mode?
  75.  * (used to maintain security in signal handlers)
  76.  */
  77. #define valid_user_regs(regs) \
  78.     (user_mode(regs) && ((regs)->ARM_sp & 3) == 0)
  79.  
  80. #endif
  81.  
  82.